﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Iesi.Collections.Generic;
using System.Linq;
using System.Text;

namespace SEDomain.Entities
{
    public class Product : Entity<Product>
    {
        private string _productCode;
        private string _productAc;
        private string _productAr;
        private string _productGab;
        private string _productDescription;
        private string _customerProductCode;
        private Customer _customer;
        private User _user;
        private string _additionalProcess;
        private string _productType;
        private readonly IList<ProductPrint> _productprints;
        private readonly IList<Coas> _listcoas;
        private DateTime? _addDate;
        private string _status;

        public Product(): this(null,null)
        {
        }
        public Product(Customer customer,User user)
        {
            _productprints = new List<ProductPrint>();
            _listcoas = new List<Coas>();
            _customer = customer;
            _user = user;
        }
        public virtual string ProductCode
        {
            get { return _productCode; }
            set { _productCode = value; }
        }
        public virtual string ProductAc
        {
            get { return _productAc; }
            set { _productAc = value; }
        }
        public virtual string ProductAr
        {
            get { return _productAr; }
            set { _productAr = value; }
        }
        public virtual string ProductGab
        {
            get { return _productGab; }
            set { _productGab = value; }
        }
        public virtual string ProductDescription
        {
            get { return _productDescription; }
            set { _productDescription = value; }
        }
        public virtual string CustomerProductCode
        {
            get { return _customerProductCode; }
            set { _customerProductCode = value; }
        }
        public virtual Customer Customer
        {
            get { return _customer; }
            set { _customer = value; }
        }
        public virtual User User
        {
            get { return _user; }
            set { _user = value; }
        }
        public virtual string AdditionalProcess
        {
            get { return _additionalProcess; }
            set { _additionalProcess = value; }
        }
        public virtual string ProductType
        {
            get { return _productType; }
            set { _productType = value; }
        }
        public virtual ReadOnlyCollection<ProductPrint> ProductPrints
        {
            get { return new ReadOnlyCollection<ProductPrint>(_productprints); }
        }
        public virtual ReadOnlyCollection<Coas> ListCoas
        {
            get { return new ReadOnlyCollection<Coas>(_listcoas); }
        }
        public virtual DateTime? AddDate
        {
            get { return _addDate; }
            set { _addDate = value; }
        }
        public virtual string Status
        {
            get { return _status; }
            set { _status = value; }
        }
    }
}
